<?php

class JLChangePasswordForm extends CFormModel
{
	/**
	 * oldPassword
	 */
	public $oldPassword;
	/**
	 * password
	 */
	public $password;
	/**
	 * verifyPassword
	 */
	public $verifyPassword;
	/**
	 * user
	 */
	private $__user;
	
	/**
	 * Thiết lập các quy tắc xác thực
	 */
	public function rules() {
		return array(
			array('oldPassword,password, verifyPassword', 'required', 'on'=>'fullchange','message' => "{attribute} (again) cannot be blank."),
			array('oldPassword', 'length', 'max'=>128, 'min' => 6,'message' => "Incorrect password (minimal length 6 symbols).", 'on'=>'fullchange'),
			array('oldPassword', 'checkOldPassword', 'on'=>'fullchange'),
			array('verifyPassword', 'verifyPassword', 'on'=>'fullchange'),
			array('password', 'length', 'max'=>128, 'min' => 6,'message' => "Incorrect password (minimal length 6 symbols)."),
			//array('verifyPassword', 'compare', 'compareAttribute'=>'password', 'message' => "Mật khẩu xác nhận sai."),
		);
	}
	public function verifyPassword($attribute, $params)
	{
		if(!$this->hasErrors()){
			if(!Yii::app()->user->isGuest){
				$strVerifyPassword = sha1(md5($this->verifyPassword));
				if($strVerifyPassword != currentUser()->password){
					$this->addError('verifyPassword', 'Verify password is wrong.');
				}
			}
		}
	}
	/**
	 * Phương thức checkOldPassword($attribute, $params) dùng để xác thực mật khẩu cũ của user
	 *
	 * @param type $attribute
	 * @param type $params 
	 */
	public function checkOldPassword($attribute, $params)
	{
		if(!$this->hasErrors()){
			if(!Yii::app()->user->isGuest){
				$strOldPassword = sha1(md5($this->oldPassword));
				if($strOldPassword != currentUser()->password){
					$this->addError('oldPassword', 'The password you gave is incorrect.');
				}
			}
		}
	}
	
	/**
	 * Phương thức setUser($user) dùng để set thuộc tính user
	 *
	 * @param type $user 
	 */
	// public function setUser($user)
	// {
		// $this->__user = $user;
	// }
	
	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'oldPassword' => "Mật khẩu hiện tại",
			'password' => "Mật khẩu mới",
			'verifyPassword' => "Xác nhận mật khẩu",
		);
	}
}
